package abstractfactoryp;

import factoryp.CarInterface;

public class MainTest {
    //抽象工厂模式:superFactory-->工厂的工厂
    public static void main(String[] args) {
        SuperFactory sfCar =SuperProduct.getSuperFactory("car");//创建车工厂
        SuperFactory sfMaterial =SuperProduct.getSuperFactory("material");
        sfCar.getCar("Tesla").say();
        MaterialInterface materialInterface =sfMaterial.getMaterial("Electric");
        materialInterface.use();
    }
    /**
     * 1:使用场景:你只需提需求,剩下的交给工厂
     *  (1)生活场景:如我想要一辆充电的汽车,最好是特斯拉的;那超级工厂能造就会直接给你
     *  (2)开发场景:mybatis中的BeanFactory
     * 2:优点:
     * (1)产品需要多模块协作,能保证客户的选择最终是一个产品
     * 3:缺点:
     * (1)扩展性差
     * (2)代码复杂高,不易维护
     * */

}
